/*
 * Clase.h
 *
 *  Created on: 29/02/2012
 *
 */

#ifndef CLASE_H_
#define CLASE_H_

#include <string>
#include <vector>
#include <fstream>
#include "Atributo.h"
#include "Metodo.h"
#include "Constantes.h"

using namespace std;

class Clase {
private:
	string nombre;
	string clasePadre;
	vector<Atributo> atributos;
	vector<Metodo> metodos;
public:
	Clase();
	Clase(string nombre, string clasePadre);
	virtual ~Clase();
	string getNombre();
	string getClasePadre();
	void setNombre(string nombre);
	void setClasePadre(string clasePadre);
	void escribirHeader();
	void escribirCpp();
	void agregarAtributo(Atributo nuevoAtributo);
	void agregarMetodo(Metodo nuevoMetodo);
	int cantidadAtributos();
	int cantidadMetodos();
	vector<Atributo> getAtributos();
	vector<Metodo> getMetodos();
	Atributo obtenerAtributo(int posicion);
	Metodo obtenerMetodo(int posicion);
	void eliminarAtributo(int posicion);
	void eliminarMetodo(int posicion);
};

#endif /* CLASE_H_ */
